home *** CD-ROM | disk | FTP | other *** search
/ QRZ! Ham Radio 8 / QRZ Ham Radio Callsign Database - Volume 8.iso / mac / files / t_sys5 / unixcpio.gz / unixnet.cpio / hapn.h < prev    next >
C/C++ Source or Header  |  1994-07-11  |  4KB  |  137 lines

  1. /*  HAPN-1 PC plug-in card driver.
  2.  *  This card contains an Intel 8273 SDLC/HDLC Protocol Controller
  3.  *  The card is hardwired to addresses 310-31f and IRQ 2
  4.  */
  5.  
  6. #define NHAPN 1
  7. #define INTMASK 0x21        /*  PC interrupt controller (8259) */
  8.  
  9. struct hapn {
  10.     long rxints;            /* RX interupt count                  */
  11.     long txints;            /* TX interrupt count                 */
  12.                 /* Error counters                     */
  13.     int badint;             /* Bad interrupt type                 */
  14.     int crcerr;             /* CRC errors                         */
  15.     int aborts;             /* RX frame aborts                    */
  16.     int dmaorun;            /* DMA overun                         */
  17.     int toobig;             /* RX frame too large                 */
  18.     int rframes;            /* # of RX frames                     */
  19.     int cdloss;             /* Loss of DCD during receive         */
  20.     int rxorun;             /* Receive interrupt overun           */
  21.     int nomem;              /* insufficient memory                */
  22.     int t_urun;             /* TX underruns                       */
  23.     int ctsloss;            /* Loss of CTS (dead-man timeout)     */
  24.     int taborts;            /* TX aborts                          */
  25.     int tframes;            /* # of TX frames                     */
  26.  
  27.     struct mbuf *rcvq;      /* Received frame queue               */
  28.     int16 rcvcnt;           /* Count of frames on rcvq            */
  29.     struct mbuf *rcvbuf;    /* Current receive buffer             */
  30.     int16 bufsiz;           /* Maximum RX frame size              */
  31.     char *rcp;        /* RX data pointer                    */
  32.  
  33.     struct mbuf *sndq;      /* Transmit frames queue              */
  34.     int16 sndcnt;           /* Count of frames on sndq            */
  35.     struct mbuf *sndbuf;    /* Current TX frame buffer            */
  36.     int tstate;             /* Transmitter state                  */
  37. #define IDLE 0
  38. #define DEFER 1
  39. #define ACTIVE 2
  40.     int mode;               /* Channel-access mode                */
  41. #define CSMA 0
  42. #define FULLDUP 1
  43.     int16 base;             /* Base I/O address of board          */
  44.     unsigned vec;           /* Interrupt level                    */
  45.     void (*oldvec)();    /* Previous interrupt service vector */
  46. };
  47.  
  48. extern struct hapn hapn[];
  49.  
  50. /*  Interrupt vector handler  */
  51.  
  52. void haint();
  53.  
  54. /*  8273 register addresses  */
  55.  
  56. #define CMD 0
  57. #define STA 0
  58. #define PAR 1
  59. #define RES 1
  60. #define RST 1
  61. #define TXI 2
  62. #define RXI 3
  63. #define TXD 4
  64. #define RXD 8
  65.  
  66. /*  8273 commands  */
  67.  
  68. #define    SET_ONE        0xa4
  69. #define    RST_ONE        0x64
  70. #define    SET_XFER    0x97
  71. #define    RST_XFER    0x57
  72. #define    SET_MODE    0x91
  73. #define    RST_MODE    0x51
  74. #define    HDLC        0x20
  75. #define    EOP        0x10
  76. #define    EARLY        0x8
  77. #define    BUFFERD        4
  78. #define    PREFRM        2
  79. #define    FLG_STM        1
  80. #define    SET_SERIAL    0xa0
  81. #define    RST_SERIAL    0x60
  82. #define    LOOP        4
  83. #define    TXC_RXC        2
  84. #define    NRZI        1
  85. #define GENERAL_RX    0xc0
  86. #define SELECT_RX    0xc1
  87. #define SELECT_LRX    0xc2
  88. #define RX_DISABLE    0xc5
  89. #define TX_FRAME    0xc8
  90. #define LOOP_TX        0xca
  91. #define TX_TRANS    0xc9
  92. #define ABORT_TXF    0xcc
  93. #define ABORT_LTX    0xce
  94. #define ABORT_TXT    0xcd
  95. #define READ_A        0x22
  96. #define    CD        2
  97. #define    CTS        1
  98. #define READ_B        0x23
  99. #define SET_B        0xa3
  100. #define RST_B        0x63
  101. #define FLAG_D        0x20
  102. #define IRQ_ENB        8
  103. #define RTS        1
  104.  
  105. /*  Status register bits  */
  106.  
  107. #define CBSY    0x80
  108. #define CBF    0x40
  109. #define CPBF    0x20
  110. #define CRBF    0x10
  111. #define RXINT    8
  112. #define TXINT    4
  113. #define RXIRA    2
  114. #define TXIRA    1
  115.  
  116. /*  Transmit result codes  */
  117.  
  118. #define EARLY_TXI    0xc
  119. #define TX_CMPLT    0xd
  120. #define DMA_URUN    0xe
  121. #define CTS_LOSS    0xf
  122. #define ABORT_CMPLT    0x10
  123.  
  124. /*  Receive result codes  */
  125.  
  126. #define A1_MATCH    0
  127. #define A2_MATCH    1
  128. #define CRCERR        3
  129. #define ABORT_DET    4
  130. #define IDLE_DET    5
  131. #define EOP_DET        6
  132. #define SHORT_FRM    7
  133. #define DMA_OVRN    8
  134. #define MEM_OVFL    9
  135. #define CD_LOSS        0xa
  136. #define RX_ORUN        0xb
  137.